More SQL
- 基本SQL & 概念
Index, pri/f key INSERT DELETE
快速複習!
欄位名稱跟table名稱要加重音符號(`)!
查詢:
SELECT * FROM <table> WHERE <condition>
觀念:欄位的Key設定
Index (索引鍵)
- 資料索引,可加快搜尋速度
- 可多欄位設定為 Index
NOTE:有點像是看書的時候的頁碼,方便你定位
Primary Key(PK):
常用來連接不同table之間的查詢/關聯(F Key)
- 是一種 index 但不能為空值(NULL),PK會自動建立 index
- 每個 table 只能有一個 PRIMARY Key
- 每一筆資料的PK都要獨一無二(不一樣)
NOTE:你如果有uid,就可以很快定義出具體的某比資料,就如同你有頁碼,就可以很快找到某一頁
Foreign Key(FK):
table之間的愛恨情愁
- 避免表之間的關聯被破壞
- 防止不符合對應欄位的型態
- 插入的值一定要在對應的表
NOTE: 用個例子來解釋一下,這是兩張表,上面的叫做Persons,下面的叫做Orders。PersonID是上面表的PK,它每筆資料都一定會有。下面的表格用到PersonID、用到對方的PK,所以建立起了關聯。它對應到別張表的這個欄位就可以設定成FOREIGN KEY,所以邊PersonID就是Foreign Key,它可以讓資料庫自動避免關聯被破壞,避免像是Persons被刪除,Orders對應不到,或是欄位資料內容不對。
哪個是FK?
NOTE: 哪個欄位是FK呢?這邊可以看到有關連的部份只有country_code和code,可以注意到有*和數字1,星號是說,很多比紀錄的這個欄位可以值一樣,像是我和你分別是兩比紀錄,而且都住台灣,那我們的country_code就會一樣。 而那個1就是指說coutries這個table裡面的每一筆紀錄,code不會重複,就是說不會有兩個country名字不一樣,code卻一樣。答:country_code
實做一張表
右鍵點擊左邊的"Tables">"Create a table"
NOTE:講了那們多,我先來代你們用圖形界面實際做一張表,這樣你如果有想試試的操作就可以自己弄表跟資料了
- 打上Table name
- 點擊下方空白處可以設定column
試試看新增一張表,叫做user 裡面有
欄位 | 欄位名稱 |
---|---|
使用者 | UID |
使用者居住地址 | City_Code |
使用者名字 | username |
使用者密碼 | password |
NOTE:你們覺得哪個欄位要設定什麼型態?哪些要有Key?
query time!
NOTE:今天來說說新增跟刪除吧!
新增
INSERT INTO <table>(<column> [,<column2>,...])
VALUES(<value for col1> [, <value for col2>])
ex:
INSERT INTO `customer`(`nickname`, `password`)
VALUES ("Temmie", "Hoi_I_AM_TEMMIE")
練習!
幫你們剛剛的表新增3筆資料
刪除
DELETE FROM <table>
WHERE <condition>
NOTE:注意,操作資料庫的時候,尤其是刪除表或是資料的時候,一定要注意你的條件,避免勿刪,或是讓整個資料表清空。
試試看
刪掉Taiwan裡,City_code<100的
用Query創建表
創建表
CREATE TABLE <table_name> (
<column_name1> <data_type>,
<column_name2> <data_type>,
<column_name3> <data_type>,
···
);
做出一張表
table name: orders
名稱 | 型態 |
---|---|
ID | 數值,PK |
username | 可變長度的字串 |
price | ??? |
NOTE: 要注意表的名稱要加s,因為order本身是SQL語法的詞,所以要避開。還有要先點選database指定它後,才能在Open SQL editor,底下用query生出table 這一部份,我想讓你們先是試著自己從網路查怎們樣在創建table時,設定PK
刪除表
DROP TABLE <table_name>;
補充資源:diagram
NOTE:這是一個可以畫table關聯圖的網站,有興趣可以進去試試看。它預設的table關係可以參考一下,想想看表之間的關係。